﻿using System;
using System.Collections.Generic;
using ContractManager.BLL.Business;
using ContractManager.Common.Class;
using ContractManager.Common.FormBase;
using ContractManager.Entity;

using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace ContractManager.Lists.Forms
{
    public partial class FrmInvestorDetail : XtraFormBase
    {
        #region "Private Variable"
        
        public bool SaveClose;
        public bool SaveNew;
        public bool OnlyView;
        public int InvestorId;

        public List<Investors> List=new List<Investors>();
        #endregion

        #region "Form Construction"
        public FrmInvestorDetail()
        {
            InitializeComponent();
        }
        #endregion

        #region "Private Method"

        private void BlankForm()
        {
            /*txtInvCode.EditValue = null;
            txtInvName.EditValue = null;
            txtInvAddress.EditValue = null;
            txtInvRepresentative.EditValue = null;
            txtInvPosition.EditValue = null;
            txtInvPhone.EditValue = null;
            txtInvFax.EditValue = null;
            txtInvBankAccount.EditValue = null;
            txtInvTaxCode.EditValue = 1;
            txtInvBusinessLicense.EditValue = null;*/
            this.ResetControls();
        }

        private void GetDetail()
        {
            Investors detail = ClsInvestors.SelectByPk(InvestorId);
            if (detail != null)
            {
                txtInvCode.EditValue = String.Format("{0}", detail.InvCode);
                txtInvName.EditValue = String.Format("{0}", detail.InvName);
                txtInvAddress.EditValue = String.Format("{0}", detail.InvAddress);
                txtInvRepresentative.EditValue = String.Format("{0}", detail.InvRepresentative);
                txtInvPosition.EditValue = String.Format("{0}", detail.InvPosition);
                txtInvPhone.EditValue = String.Format("{0}", detail.InvPhone);
                txtInvFax.EditValue = String.Format("{0}", detail.InvFax);
                txtInvBankAccount.EditValue = String.Format("{0}", detail.InvBankAccount);
                txtInvTaxCode.EditValue = String.Format("{0}", detail.InvTaxCode);
                txtInvBusinessLicense.EditValue = String.Format("{0}", detail.InvBusinessLicense);
            }   
        }

        private void DoSave()
        {
            #region "Check Condition"
            //if (!FormIsNotValidate)
            //{
            //    if (!dxValidationProvider.Validate())
            //    {
            //        XtraMessageBox.Show(
            //                    "Vui lòng nhập đầy đủ thông tin trước khi lưu",
            //                    "Thông báo",
            //                    MessageBoxButtons.OK,
            //                    MessageBoxIcon.Error);
            //        txtInvCode.SelectAll();
            //        txtInvCode.Focus();
            //        return;
            //    }
            //}
            #endregion

            Investors item = InvestorId <= 0 ? new Investors() : ClsInvestors.SelectByPk(InvestorId);
                
            item.InvID = InvestorId;
            item.InvCode = String.Format("{0}", txtInvCode.EditValue);
            item.InvName = String.Format("{0}", txtInvName.EditValue);
            item.InvAddress = String.Format("{0}", txtInvAddress.EditValue);
            item.InvRepresentative = String.Format("{0}", txtInvRepresentative.EditValue);
            item.InvPosition = String.Format("{0}", txtInvPosition.EditValue);
            item.InvPhone = String.Format("{0}", txtInvPhone.EditValue);
            item.InvFax = String.Format("{0}", txtInvFax.EditValue);
            item.InvBankAccount = String.Format("{0}", txtInvBankAccount.EditValue);
            item.InvTaxCode = String.Format("{0}", txtInvTaxCode.EditValue);
            item.InvBusinessLicense = String.Format("{0}", txtInvBusinessLicense.EditValue);
            
            try
            {
                if (InvestorId > 0)
                {
                    ClsInvestors.Update(item);
                }
                else
                {
                    var citem = ClsInvestors.SelectByCode(item.InvCode);
                    if (citem != null)
                    {
                        XtraMessageBox.Show(
                            "Mã chủ đầu tư không được phép trùng.",
                            "Thông báo",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                        return;
                    }
                    ClsInvestors.Insert(item);
                    InvestorId = item.InvID;
                    List.Add(item);
                }
                
                btnPrint.Enabled = btnDelete.Enabled = InvestorId > 0;
                if (SaveNew)
                {
                    InvestorId = 0;
                    BlankForm();
                    txtInvCode.Focus();
                    
                }
                else if (SaveClose)
                {
                    Close();
                }


            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(
                    String.Format("Có lỗi xảy ra trong quá trình cập nhật dữ liệu. {0}", ex.Message),
                    "Thông báo",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
        }

        private void DoDelete()
        {
            if (InvestorId <= 0) return;
            
            try
            {
                if (
                        XtraMessageBox.Show(
                                        "Bạn có muốn xóa bản ghi này không?",
                                        "Thông báo",
                                        MessageBoxButtons.YesNo,
                                        MessageBoxIcon.Question) == DialogResult.No) return;
                ClsInvestors.DeleteByPk(InvestorId);
                Close();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(
                       "Có lỗi xảy ra trong quá trình xóa dữ liệu. " + ex.Message,
                       "Thông báo",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Error);
            }
        }

        #endregion

        #region "Form Event"
        private void FrmInvestorDetailLoad(object sender, EventArgs e)
        {
            BlankForm();
            if (!String.IsNullOrEmpty(FormXtraLayoutTemplate))
            {
                var fileLayout = ClsVariable.GetRestoreLayoutFullPath(FormXtraLayoutTemplate);
                layoutControl.RestoreLayoutFromXml(fileLayout);
            }
            if (InvestorId > 0) GetDetail();
            if (OnlyView)
            {
                btnSaveNew.Enabled = false;
                btnSave.Enabled = false;
                btnSaveClose.Enabled = false;
                btnDelete.Enabled = false;
                btnPrint.Enabled = false;
                btnDesign.Enabled = false;
                btnRefresh.Enabled = false;
            }
        }
        #endregion

        #region "Toolbar Event"
        private void TbMenuItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            switch (e.Item.Name)
            {
                case "btnSave":
                    DoSave();
                    break;
                case "btnSaveNew"://Lưu và thêm mới
                    SaveNew = true;
                    SaveClose = false;
                    DoSave();
                    break;
                case "btnSaveClose"://Lưu và đóng
                    SaveClose = true;
                    SaveNew = false;
                    DoSave();
                    break;
                case "btnDelete":
                    DoDelete();
                    break;
                case "btnDesign":
                    break;
                case "btnRefresh"://Nạp lại danh mục
                    break;
                case "btnHistory"://History
                    break;
                case "btnClose":
                    Close();
                    break;
            }
        }
        #endregion
    }
}
